Windows 向け VLC を Ubuntu でクロスコンパイルする
かなりつらかったです
何故クロスコンパイルなのか
公式が推奨してるから
table:building-method
MinGW on Linux Obtaining the toolchain Preferred method involving cross-compilation from Linux. On computers running Microsoft Windows, a virtual machine is necessary to run Linux.
MSYS+MinGW on Windows Compile with MSys Native compilation method. MSYS is a minimal build environment to compile Unix-style projects directly on Microsoft Windows. This is not officially supported by VideoLAN. Best of luck.
Cygwin on Windows Compile with Cygwin Cygwin method. Cygwin emulates a POSIX environment to compile on Microsoft Windows. This is error-prone and slow and therefore not recommended.
らしいです♪
しかし公式の手順は Debian 向けっぽいし、build.sh を使わずに手動でビルドするので面倒
なので気合で build.sh でビルドしてみました
手順
VLC のソースを落とす
$ git clone https://github.com/videolan/vlc.git
ミラーじゃなくて公式から落としたほうが良いらしいね
依存パッケージを入れる
!!!注意!!! 今回は libvlc のみビルドしたので qt 周りと NSIS とかのインストーラ周りの依存を入れていません!
気合で探してください、僕には無理でした…
MinGW C Compiler
gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools
Lua
lua5.2
autotools
libtool automake autoconf autopoint make gettext pkg-config
Wine
wine64-development-tools libwine-dev
公式の依存リストには書いてないけど必要だった奴
gperf
Wine の headers のパスをなおす
ln -sf /usr/include/wine/wine/* /usr/include/wine
build.sh でビルドする
./extras/package/win32/build.sh -z
-z は without-gui、libvlc のみ
成果物を固める
フォルダに固める
make package-win-strip
zip に固める
make package-win32-zip
できた!
build/win64/vlc-3.0.14/libvlc.dll
build/win64/vlc-3.0.14/libvlccore.dll
build/win64/vlc-3.0.14/plugins
があればよい